Skip to main content

TCP/IP 握手详解

在网站部署、接口调试、网络通信等场景中,TCP/IP 协议是基础,而三次握手则是通信建立的关键步骤。


🧱 什么是 TCP/IP 模型?

TCP/IP 是互联网通信协议的基础。包含 4 层结构:

层级协议作用
应用层HTTP, FTP, DNS提供服务和接口
传输层TCP, UDP可靠或非可靠传输
网络层IP, ICMP地址寻址与路由
链路层Ethernet, PPP网卡间通信

🤝 三次握手原理

TCP 是 面向连接、可靠传输 的协议。它在通信前需通过 三次握手 建立连接。

1. 客户端 → 发送 SYN
2. 服务器 → 回复 SYN + ACK
3. 客户端 → 回复 ACK(连接建立)

📦 图示流程:

Client   →  SYN        →  Server
Client ← SYN + ACK ← Server
Client → ACK → Server
info

握手目的是确保双方准备就绪,网络可达。


⚙️ 实际部署中相关配置场景

✅ 后端监听端口(Node.js/Flask/.NET)

const express = require('express');
const app = express();
app.listen(3000, '0.0.0.0', () => {
console.log("Server started on port 3000");
});

✅ 云部署/容器环境中三次握手失效常见原因

问题原因
无法连接未监听 0.0.0.0 或端口未暴露
timeout防火墙或云安全组未开放端口
接口健康检查失败TCP 未响应 SYN 请求

🧪 排查握手失败的实用工具

# 检查 TCP 端口开放
telnet 127.0.0.1 3000
nc -zv 127.0.0.1 3000

# 查看网络监听端口
netstat -an
lsof -i :5000

🔐 K8s 中 readinessProbe 使用 TCP 检查连接是否正常

readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10

🧠 TCP 相关知识补充

四次挥手(断开连接)
  1. 客户端发送 FIN,表示“我没数据了”
  2. 服务器回复 ACK
  3. 服务器发送 FIN
  4. 客户端回复 ACK,断开连接

✅ 总结

知识点说明
三次握手建立连接,保障可靠性
监听地址建议使用 0.0.0.0,避免外网无法连接
防火墙与云安全组必须开放目标端口
容器环境readinessProbe 会进行 TCP 握手检测

📚 推荐资源